function visualize_noma(alpha_near, alpha_far, distance_near, distance_far)
% visualize_noma - 可视化NOMA系统的功率域复用和用户位置
%
% 输入参数:
%   alpha_near   - 近用户功率分配系数
%   alpha_far    - 远用户功率分配系数
%   distance_near - 近用户到基站的距离
%   distance_far  - 远用户到基站的距离

% 创建新图形
figure('Name', 'NOMA系统示意图', 'Position', [100, 100, 1000, 500]);

% 第一个子图：用户位置分布
subplot(1, 2, 1);
% 绘制基站和用户
theta = linspace(0, 2*pi, 100);
r_max = distance_far * 1.2;  % 最大半径
r_axis = linspace(0, r_max, 5);

% 绘制同心圆
hold on;
for r = r_axis
    x = r * cos(theta);
    y = r * sin(theta);
    plot(x, y, 'k:', 'LineWidth', 0.5);
end

% 绘制辐射线
for ang = linspace(0, 2*pi, 12)
    x = [0, r_max*cos(ang)];
    y = [0, r_max*sin(ang)];
    plot(x, y, 'k:', 'LineWidth', 0.5);
end

% 绘制基站（中心点）
plot(0, 0, 'ks', 'MarkerSize', 10, 'MarkerFaceColor', 'k');
text(0, -20, '基站', 'HorizontalAlignment', 'center');

% 随机位置的角度（仅用于可视化）
angle_near = pi/4;
angle_far = 3*pi/4;

% 绘制近用户
x_near = distance_near * cos(angle_near);
y_near = distance_near * sin(angle_near);
plot(x_near, y_near, 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
text(x_near, y_near+20, ['近用户 (' num2str(distance_near) 'm)'], 'Color', 'b', 'HorizontalAlignment', 'center');

% 绘制远用户
x_far = distance_far * cos(angle_far);
y_far = distance_far * sin(angle_far);
plot(x_far, y_far, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');
text(x_far, y_far+20, ['远用户 (' num2str(distance_far) 'm)'], 'Color', 'r', 'HorizontalAlignment', 'center');

% 绘制从基站到用户的连线
plot([0, x_near], [0, y_near], 'b-', 'LineWidth', 1);
plot([0, x_far], [0, y_far], 'r-', 'LineWidth', 1);

title('NOMA用户位置分布');
axis equal;
axis([-r_max r_max -r_max r_max]);
axis off;

% 第二个子图：功率域复用示意图
subplot(1, 2, 2);

% 频率轴
freq_axis = linspace(0, 10, 1000);
bandwidth = 1;  % 带宽

% 创建功率谱
power_near = alpha_near * exp(-(freq_axis-5).^2/(2*bandwidth^2));
power_far = alpha_far * exp(-(freq_axis-5).^2/(2*bandwidth^2));

% 绘制功率谱
area(freq_axis, power_far, 'FaceColor', 'r', 'FaceAlpha', 0.5, 'DisplayName', ['远用户 (' num2str(alpha_far*100) '%)']);
hold on;
area(freq_axis, power_near, 'FaceColor', 'b', 'FaceAlpha', 0.5, 'DisplayName', ['近用户 (' num2str(alpha_near*100) '%)']);

% 添加功率域用户区分示意
plot([0, 10], [alpha_near, alpha_near], 'k--', 'LineWidth', 1);
text(10.2, alpha_near, '功率域用户区分', 'VerticalAlignment', 'middle');

% 图例和标签
legend('Location', 'northwest');
title('NOMA功率域复用');
xlabel('频率');
ylabel('功率谱密度');
xlim([0, 10]);
ylim([0, 1]);
grid on;

% 添加说明文本
dim = [0.15 0.2 0.3 0.1];
str = {'NOMA特点：', ...
       '• 同一时频资源上复用多个用户', ...
       '• 通过功率域区分不同用户', ...
       '• 近用户使用SIC技术解码', ...
       '• 远用户直接解码自身信号'};
annotation('textbox', dim, 'String', str, 'FitBoxToText', 'on', 'BackgroundColor', 'white');

% 添加总标题
sgtitle('NOMA (非正交多址) 系统示意图');

end 